home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / desktop / mwfish.zip / SOURCES.ZIP / APPLDLG.MOD < prev    next >
Text File  |  1991-06-27  |  15KB  |  342 lines

  1. (*# check(stack=>off,
  2.           index=>off,
  3.           range=>off,
  4.           overflow=>off,
  5.           nil_ptr=>off) *)
  6.  
  7. IMPLEMENTATION MODULE ApplDlg;
  8.  
  9. IMPORT Windows,WinStr,Str,WMain,ApplFish,Lib;
  10.  
  11. CONST
  12. (* String table constants *)
  13.   IDSNAME  =   100;
  14.   IDSABOUT =   200;
  15.   IDSTITLE =   300;
  16.   IDSMESSAGE = 400;
  17.   IDSCAPTION = 500;
  18.   IDSDEFSPEC = 501;
  19.   IDSDEFEXT  = 502;
  20.  
  21. (* About Dialog box resource id *)
  22.   ABOUTBOX =     1;
  23.   FISHSELECT =   2;
  24.   LIFEDATABOX =  3;
  25.   FISHINFOBOX =  4;
  26.  
  27. (* Fish Select Box Controls *)
  28.   IDC_FILENAME =   400;
  29.   IDC_EDIT     =   401;
  30.   IDC_FILES    =   402;
  31.   IDC_PATH     =   403;
  32.   IDC_LISTBOX  =   404;
  33.  
  34.   IDSAVERAGECHECK =  114;
  35.   IDSBACK        =  119;
  36.   IDSCANCEL      =  118;
  37.   IDSFASTCHECK   =  115;
  38.   IDSFISHNAME    =  108;
  39.   IDSGROUPBOX    =  110;
  40.   IDSHOWMANY     =  116;
  41.   IDSHOWMANYTEXT =  112;
  42.   IDSNEXT        =  120;
  43.   IDSOK          =  117;
  44.   IDSSELECTED    =  109;
  45.   IDSSLOWCHECK   =  113;
  46.   IDSPAINT       =  102;
  47.  
  48.   SPECIAL_CHANGE =     0401H;
  49.   INIT_INSTANCES =     0402H;
  50.   RESTART        =     0403H;
  51.  
  52. VAR
  53.   lpprocAbout,lpOpenDlg,lpLifeDlg,lpInfoDlg: Windows.FARPROC;
  54.  
  55.  
  56. PROCEDURE About ( hDlg    : Windows.HWND;
  57.                  message : CARDINAL;
  58.                  wParam  : WORD;
  59.                  lParam  : LONGINT ) : Windows.BOOL ;
  60.  
  61. BEGIN
  62.   IF message = Windows.WM_COMMAND THEN
  63.     Windows.EndDialog( hDlg, CARDINAL(TRUE) );
  64.     RETURN INTEGER(TRUE);
  65.   ELSIF message = Windows.WM_INITDIALOG THEN
  66.     IF Windows.SetFocus(Windows.GetDlgItem(hDlg,Windows.IDOK)) # 0 THEN END;
  67.     IF Windows.SetTimer(hDlg,1,1000,Windows.FARPROC(0)) = 0 THEN
  68.        IF Windows.SendMessage(Windows.GetParent(hDlg),Windows.WM_COMMAND,RESTART,0) = 0 THEN END;
  69.     END;
  70.     RETURN INTEGER(TRUE);
  71.   ELSIF message = Windows.WM_TIMER THEN
  72.     IF Windows.KillTimer(hDlg,1) = 0 THEN END;
  73.     IF Windows.SendMessage(Windows.GetParent(hDlg),Windows.WM_COMMAND,RESTART,0) = 0 THEN END;
  74.     RETURN INTEGER(TRUE);
  75.   ELSE
  76.     RETURN INTEGER(FALSE);
  77.   END;
  78. END About;
  79.  
  80. PROCEDURE  PaintWindow(  hWnd   : Windows.HWND;
  81.                          hBitmap : Windows.HBITMAP;
  82.                          xext,yext : INTEGER );
  83.  
  84. VAR hdc,hmemorydc : Windows.HDC;
  85.     xoffset,yoffset : INTEGER;
  86.     Rect : Windows.RECT;
  87.  
  88. BEGIN
  89.     hdc := Windows.GetDC(hWnd);
  90.     hmemorydc := Windows.CreateCompatibleDC(hdc);
  91.     Windows.GetClientRect(hWnd,Rect);
  92.     IF Windows.SelectObject(hmemorydc,hBitmap) # 0 THEN END;
  93.     xoffset := (Rect.right - xext) DIV 2;
  94.     yoffset := (Rect.bottom - yext) DIV 2;
  95.     IF Windows.BitBlt(hdc,xoffset,yoffset,Rect.right,Rect.bottom,
  96.                       hmemorydc,0,0,Windows.SRCCOPY) # 0 THEN END;
  97.     IF Windows.DeleteDC(hmemorydc) # 0 THEN END;
  98.     IF Windows.ReleaseDC(hWnd,hdc) # 0 THEN END
  99. END PaintWindow;
  100.  
  101. PROCEDURE  PaintTheBlock(hCtrl   : Windows.HWND;
  102.                          hBitmap : Windows.HBITMAP);
  103. VAR Rect : Windows.RECT;
  104. BEGIN
  105.     Windows.GetClientRect(hCtrl,Rect);
  106.     Windows.InvalidateRect(hCtrl,Rect,0);
  107.     Windows.UpdateWindow(hCtrl);
  108.     PaintWindow(hCtrl,hBitmap,75,75)
  109. END PaintTheBlock;
  110.  
  111.  
  112. PROCEDURE  LifeInfo ( hDlg    : Windows.HWND;
  113.                  message : CARDINAL;
  114.                  wParam  : WORD;
  115.                  lParam  : LONGINT ) : Windows.BOOL ;
  116.  
  117. TYPE
  118.   ITEMTYPE = ARRAY[0..2] OF CHAR;
  119.  
  120. CONST
  121.   FISHMOVE = 99;
  122.   SETUPMOVE = 101;
  123. VAR
  124.   Rect : Windows.RECT;
  125.   s1,s2,s3,s4,s5 : ITEMTYPE;
  126.   NewInstances : CARDINAL;
  127. BEGIN
  128.     CASE message OF
  129.     | Windows.WM_TIMER:
  130.          IF wParam = WORD(SETUPMOVE) THEN
  131.             IF Windows.KillTimer(hDlg,SETUPMOVE) = 0 THEN END;
  132.             IF Windows.SendMessage(Windows.GetParent(hDlg),SPECIAL_CHANGE,0,0) = 0 THEN END;
  133.             IF Windows.SetTimer(hDlg,FISHMOVE,200,Windows.FARPROC(0)) = 0 THEN
  134.                ApplFish.TimersLow(Windows.GetParent(hDlg))
  135.             END;
  136.          ELSE
  137.             PaintWindow(Windows.GetDlgItem(hDlg,IDSPAINT),
  138.                        WMain.FishHead[WMain.FishSelected].bmap[1,
  139.                        WMain.FishHead[WMain.FishSelected].DialogFrame],
  140.                        WMain.FishHead[WMain.FishSelected].xextent,
  141.                        WMain.FishHead[WMain.FishSelected].yextent);
  142.             IF WMain.FishHead[WMain.FishSelected].DialogFrame >= 4 THEN
  143.                WMain.FishHead[WMain.FishSelected].DialogFrame := 1
  144.             ELSE
  145.                WMain.FishHead[WMain.FishSelected].DialogFrame :=
  146.                 WMain.FishHead[WMain.FishSelected].DialogFrame + 1
  147.             END
  148.          END;
  149.  
  150.        RETURN INTEGER(TRUE);
  151.  
  152.     | Windows.WM_COMMAND:
  153.          CASE wParam OF
  154.              | IDSSELECTED:
  155.                  WHILE Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  156.                        Windows.CB_DELETESTRING,1,07FFFH) >= 0 DO END;
  157.                  IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  158.                        Windows.CB_RESETCONTENT,0,0) = 0 THEN END;
  159.                  IF Windows.SendDlgItemMessage(hDlg,IDSSELECTED,
  160.                         Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  161.                             s1 := "1"; s2 := "2"; s3 := "3"; s4 := "4"; s5 := "5";
  162.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  163.                                                           LONGINT(FarADR(s1))) = 0 THEN END;
  164.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  165.                                                           LONGINT(FarADR(s2))) = 0 THEN END;
  166.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  167.                                                           LONGINT(FarADR(s3))) = 0 THEN END;
  168.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  169.                                                           LONGINT(FarADR(s4))) = 0 THEN END;
  170.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  171.                                                           LONGINT(FarADR(s5))) = 0 THEN END;
  172.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  173.                                Windows.CB_SETCURSEL,WMain.FishHead[WMain.FishSelected].Instances,07FFFH)
  174.                                = 0 THEN END;
  175.                 ELSE
  176.                     s1 := "0";
  177.                     IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  178.                                                           LONGINT(FarADR(s1))) = 0 THEN END;
  179.                     IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  180.                        Windows.CB_SETCURSEL,0,07FFFH) = 0 THEN END;
  181.  
  182.                     RETURN INTEGER(TRUE);
  183.                 END;
  184.                 | IDSCANCEL:
  185.                      Windows.EndDialog(hDlg,Windows.NULL);
  186.                      IF Windows.KillTimer(hDlg,FISHMOVE) = 0 THEN END;
  187.  
  188.                      RETURN INTEGER(TRUE);
  189.                 | IDSOK:
  190.                      IF Windows.SendDlgItemMessage(hDlg,IDSSELECTED,
  191.                             Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  192.                         WMain.FishHead[WMain.FishSelected].status := TRUE;
  193.                         NewInstances := INTEGER(Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  194.                         Windows.CB_GETCURSEL,0,07FFFH));
  195.                         IF NewInstances <> WMain.FishHead[WMain.FishSelected].Instances  THEN
  196.                            IF Windows.SendMessage(Windows.GetParent(hDlg),INIT_INSTANCES,NewInstances+1,LONGINT(WMain.FishSelected)) = 0 THEN END;
  197.                         END;
  198.  
  199.                      ELSE
  200.                         WMain.FishHead[WMain.FishSelected].status := FALSE
  201.                      END;
  202.                      IF Windows.SendDlgItemMessage(hDlg,IDSSLOWCHECK,
  203.                             Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  204.                             WMain.FishHead[WMain.FishSelected].basespeed := WMain.SLOWSPEED;
  205.                      ELSIF
  206.                          Windows.SendDlgItemMessage(hDlg,IDSAVERAGECHECK,
  207.                             Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  208.                             WMain.FishHead[WMain.FishSelected].basespeed := WMain.AVERAGESPEED;
  209.                      ELSIF
  210.                          Windows.SendDlgItemMessage(hDlg,IDSFASTCHECK,
  211.                             Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  212.                             WMain.FishHead[WMain.FishSelected].basespeed := WMain.FASTSPEED;
  213.                      END;
  214.                      Windows.EndDialog( hDlg, CARDINAL(TRUE) );
  215.                      IF Windows.KillTimer(hDlg,FISHMOVE) = 0 THEN END;
  216.  
  217.                      RETURN INTEGER(TRUE);
  218.  
  219.          END;
  220.  
  221.  
  222.     | Windows.WM_INITDIALOG:
  223.        s1 := "1"; s2 := "2"; s3 := "3"; s4 := "4"; s5 := "5";
  224.  
  225.        Windows.SetDlgItemText(hDlg, IDSFISHNAME, WMain.FishHead[WMain.FishSelected].name);
  226.        IF WMain.FishHead[WMain.FishSelected].status THEN
  227.           IF Windows.SendDlgItemMessage(hDlg,IDSSELECTED,
  228.                             Windows.BM_SETCHECK,1,07FFFH) # 0 THEN END;
  229.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  230.                                         LONGINT(FarADR(s1))) = 0 THEN END;
  231.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  232.                                         LONGINT(FarADR(s2))) = 0 THEN END;
  233.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  234.                                         LONGINT(FarADR(s3))) = 0 THEN END;
  235.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  236.                                         LONGINT(FarADR(s4))) = 0 THEN END;
  237.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  238.                                         LONGINT(FarADR(s5))) = 0 THEN END;
  239.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  240.                Windows.CB_SETCURSEL,WMain.FishHead[WMain.FishSelected].Instances,07FFFH)
  241.                = 0 THEN END;
  242.  
  243.        ELSE
  244.           s1 := "0";
  245.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  246.                                         LONGINT(FarADR(s1))) = 0 THEN END;
  247.           IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  248.                Windows.CB_SETCURSEL,0,07FFFH) = 0 THEN END;
  249.  
  250.        END;
  251.  
  252.        CASE WMain.FishHead[WMain.FishSelected].basespeed OF
  253.        | WMain.SLOWSPEED:
  254.           IF Windows.SendDlgItemMessage(hDlg,IDSSLOWCHECK,
  255.                             Windows.BM_SETCHECK,1,07FFFH) # 0 THEN END
  256.        | WMain.AVERAGESPEED:
  257.           IF Windows.SendDlgItemMessage(hDlg,IDSAVERAGECHECK,
  258.                             Windows.BM_SETCHECK,1,07FFFH) # 0 THEN END
  259.        | WMain.FASTSPEED:
  260.           IF Windows.SendDlgItemMessage(hDlg,IDSFASTCHECK,
  261.                             Windows.BM_SETCHECK,1,07FFFH) # 0 THEN END
  262.  
  263.        END;
  264.  
  265.        IF Windows.SetTimer(hDlg,SETUPMOVE,1000,Windows.FARPROC(0)) = 0 THEN
  266.           ApplFish.TimersLow(Windows.GetParent(hDlg))
  267.        END;
  268.        PaintWindow(Windows.GetDlgItem(hDlg,IDSPAINT),
  269.                    WMain.FishHead[WMain.FishSelected].bmap[1,1],
  270.                    WMain.FishHead[WMain.FishSelected].xextent,
  271.                    WMain.FishHead[WMain.FishSelected].yextent);
  272.        IF Windows.SetFocus(Windows.GetDlgItem(hDlg,IDSPAINT)) # 0 THEN END;
  273.  
  274.          RETURN INTEGER(FALSE);
  275.     ELSE
  276.   RETURN INTEGER(FALSE);
  277.   END; (*CASE message*)
  278.   RETURN INTEGER(FALSE);
  279. END LifeInfo;
  280.  
  281. PROCEDURE Selec ( hDlg    : Windows.HWND;
  282.                  message : CARDINAL;
  283.                  wParam  : WORD;
  284.                  lParam  : LONGINT ) : Windows.BOOL ;
  285. VAR index : WORD;
  286.     fstr  : ARRAY [0..11] OF CHAR;
  287.  
  288. BEGIN
  289.     CASE message OF
  290.         | Windows.WM_COMMAND:
  291.          CASE wParam OF
  292.                 | IDC_LISTBOX:
  293.                 CASE Windows.HIWORD(lParam) OF
  294.                      | Windows.LBN_SELCHANGE:
  295.                        IF Windows.DlgDirSelect(hDlg, fstr, IDC_LISTBOX) # INTEGER(TRUE) THEN
  296.                           Windows.SetDlgItemText(hDlg, IDC_EDIT, fstr);
  297.                           IF Windows.SendDlgItemMessage(hDlg, IDC_EDIT,
  298.                                                Windows.EM_SETSEL,
  299.                                                0,
  300.                                                07FFFH) # 0 THEN
  301.                           END; (*IF*)
  302.                        ELSE
  303.                           WinStr.Concat(fstr, fstr,WMain.szMask);
  304.                           Windows.SetDlgItemText(hDlg, IDC_EDIT, fstr);
  305.                           IF Windows.SendDlgItemMessage(hDlg, IDC_EDIT,
  306.                                                Windows.EM_SETSEL,
  307.                                                0,
  308.                                                07FFFH) # 0 THEN
  309.                           END; (*IF*)
  310.                        END; (*IF*)
  311.                      | Windows.LBN_DBLCLK:
  312.                           IF Windows.MessageBox(hDlg,"Double Click","Howdy",Windows.MB_OK) = 0 THEN END;
  313.                 END; (*CASE lParam*)
  314.                 RETURN INTEGER(TRUE);
  315.                 | Windows.IDOK:
  316.                      lpLifeDlg := Windows.MakeProcInstance( Windows.FARPROC(FarADR(LifeInfo)), WMain.hInst);
  317.                      IF Windows.DialogBox( WMain.hInst, FarADDRESS(LONGCARD(LIFEDATABOX)), hDlg, lpLifeDlg ) # 0 THEN END;
  318.                      Windows.FreeProcInstance(lpLifeDlg);
  319.                 | Windows.IDCANCEL:
  320.                      Windows.EndDialog(hDlg,Windows.NULL);
  321.                      RETURN INTEGER(TRUE);
  322.           END; (*CASE wParam*)
  323.     | Windows.WM_INITDIALOG:
  324.        Str.Copy(WMain.szPath, CHR(0C) );
  325.        IF Windows.DlgDirList(hDlg, WMain.szPath, IDC_LISTBOX, IDC_PATH, 04010H) # 0 THEN END;
  326.        WinStr.Copy(WMain.szMask,WMain.szPath);
  327.        Windows.SetDlgItemText(hDlg, IDC_EDIT, WMain.szMask);
  328.        IF Windows.SendDlgItemMessage(hDlg, IDC_EDIT,
  329.                                     Windows.EM_SETSEL,
  330.                                     0,
  331.                                     07FFFH) # 0 THEN
  332.        END; (*IF*)
  333.        IF Windows.SetFocus(Windows.GetDlgItem(hDlg,IDC_EDIT)) # 0 THEN END;
  334.        RETURN INTEGER(FALSE);
  335.   ELSE
  336.   RETURN INTEGER(FALSE);
  337.   END; (*CASE message*)
  338.   RETURN INTEGER(FALSE);
  339. END Selec;
  340.  
  341. END ApplDlg.
  342.